package cn.tristenstudy.blog.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Properties;

/**
 * 邮件发送工具类
 *
 * @author xichen1.li
 * @date 2020-12-25 13:38
 */
@Component
public class EmailUtil {

    @Autowired
    private JavaMailSenderImpl javaMailSender;

    /**
     * 复杂邮件发送工具方法
     *
     * @param html     是否开启复杂文本发送
     * @param encoding 邮件编码
     * @param subject  邮件主题
     * @param text     邮件正文（支持解析html文件）
     * @param sendTo   发送到
     * @param sendFrom 发送者
     * @throws MessagingException 邮件发送异常
     */
    public void sendMail(Boolean html, String encoding, String subject, String text, String sendTo, String sendFrom) throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //组装
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, html, encoding);
        helper.setSubject(subject);
        //true：解析html文件
        helper.setText(text, true);
        //设置邮件接收者和发送者
        helper.setTo(sendTo);
        helper.setFrom(sendFrom);
        //发送邮件
        javaMailSender.send(mimeMessage);
    }

    /**
     * 复杂邮件发送工具方法（带附件发送）
     *
     * @param html     是否开启复杂文本发送
     * @param encoding 邮件编码
     * @param subject  邮件主题
     * @param text     邮件正文（支持解析html文件）
     * @param path     附件路径
     * @param fileName 附件名称
     * @param sendTo   发送到
     * @param sendFrom 发送者
     * @throws MessagingException 邮件发送异常
     */
    public void sendMail(Boolean html, String encoding, String subject, String text, String path, String fileName, String sendTo, String sendFrom) throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //组装
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, html, encoding);
        helper.setSubject(subject);
        //true：解析html文件
        helper.setText(text, true);
        //附件
        File file = new File(path);
        helper.addAttachment(fileName, file);
        //设置邮件接收者和发送者
        helper.setTo(sendTo);
        helper.setFrom(sendFrom);
        //发送邮件
        javaMailSender.send(mimeMessage);
    }
}
